<?php
// Генерируем форму по объекту sharpData
class qsform_sharpDataForm
{
	// !!! Заметки: задание имен и опций полей, 
	// получение данных, работа с сессиями, сообщения об ошибках валидации
	// обработка типов полей 
	// Хранилище данных
	private $dataobj;
	// Форма
	private $form;
	//
	function __construct()
	{
		//
		$this->dataobj = null;
	}
	function setDataObj($dataobj)
	{
		// Устанавливаем объект с данными
		$this->dataobj = $dataobj;
	}
	function create($action_url,$metod='post',$formname=null)
	{
		//
		$this->form=new HTML_QuickForm($this->formname,
							$this->metod, 
							$action_url);
	}
	function &addElement($element)
	{
		//
		$args = func_get_args();
		return call_user_func_array(array(&$this->form,'addElement'),
							$args);
	}
	function generate($formvar=null)
	{
		// Генерируем форму по объекту
		foreach($this->dataobj as $name=>$obj)
		{
			// echo "<br /><pre>";
			// echo $name."\n";
			// print_r($obj);
			// echo "<pre>";
			// Задаем имя переменной формы
			if (is_null($formvar))
			{
				$varname = $name;
			}else
			{
				$varname = "{$formvar}[{$name}]";
			}
			// Добавляем поле в форму
			$this->addElement('text',$varname,$name,
							array('value'=>$obj->get('form')));
		}
	}
	function display()
	{
		//
		$this->form->display();
	}
	function autopilot($dataobj,$action_url,$varname,$header,$submit)
	{
		// Генерируем и показываем форму
		$this->setDataObj($dataobj);
		$this->create($action_url);
		$this->addElement('header', null, $header);
		$this->generate($varname);
		$this->addElement('submit', null, $submit);
		$this->display();
	}
}
?>